package com.ruoyi.assets.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.assets.domain.StateAsset;
import com.ruoyi.assets.domain.StateCollection;
import com.ruoyi.assets.domain.dto.StateAssetQueryDto;
import com.ruoyi.common.core.redis.CacheRelations;
import com.ruoyi.common.core.redis.RelativeCache;
import org.apache.ibatis.annotations.CacheNamespace;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * 资产Mapper接口
 * 
 * @author ruoyi
 */
@CacheNamespace(implementation = RelativeCache.class,eviction= RelativeCache.class)
@CacheRelations({StateCollection.class})
public interface StateAssetMapper extends BaseMapper<StateAsset> {
    
    /**
     * 查询资产列表
     * 
     * @param queryDto 查询条件
     * @return 资产列表
     */
    List<StateAsset> selectStateAssetList(@Param("query") StateAssetQueryDto queryDto);
    
    /**
     * 统计不同状态的资产数量
     * 
     * @return 状态统计结果
     */
    Map<String, Object> countAssetsByStatus();
    
    /**
     * 按街道名称分组统计资产
     * 
     * @return 街道分组统计结果
     */
    List<Map<String, Object>> countAssetsByStreet();
    
    /**
     * 统计月度资产增长趋势
     * 
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return 月度增长趋势数据
     */
    List<Map<String, Object>> countAssetMonthlyTrend(@Param("startDate") Date startDate, @Param("endDate") Date endDate);
} 